/**
 * \file traducteur_message.c
 * \author H4201
 */

#ifndef _TRADUCTEUR_MESSAGE_H_
#define _TRADUCTEUR_MESSAGE_H_

/* MODULES USED */

#include <stdbool.h>
#include "../interface/messqueue.h"

/*EXPORTED FUNCTIONS*/

/**
 * Transforme le message décrit par la structure message 
 * en une chaine de caractères
 * @param[in] message Le message à sérialiser
 * @return La chaîne de caractères créée à partir du message,
 * <tt>NULL</tt> si le message est invalide 
 */
char * serialiser_message(message_t message);

/**
 * Traduit le message texte en une structure message.
 * @param[in] message_texte Le texte à désérialiser
 * @return Le message obtenu à partir du texte.
 * Si le texte ne décrit pas un message valide,
 * le message retourné sera de type -1.
 */
message_t deserialiser_message(char * message);

/**
 * Indique si deux messages sont égaux
 * @param[in] m1 L'un des messages à comparer
 * @param[in] m2 L'autre message à comparer
 * @return true/1 s'ils sont égaux, false/0 sinon.
 */
bool messages_egaux(message_t m1, message_t m2);

/**
 * Retourne le nombre de paramètres d'un message selon son type
 * @param[in] type Le type du message dont on souhaite connaître
 * le nombre de paramètres
 * @return Le nombre de paramètres pour ce type de message.
 * -1 pour un type de message inexistant.
 */
int nb_params_message(int type);
#endif
